Laravel Nova
https://gyazo.com/5dcdc2b6a710089c8e9354381b4a5b6b
できること
DBのリソース管理
DBレコードのCRUDや検索
統計情報(後述のLensを自分で定義すると利用可能になる)の閲覧
有償。メジャーアップデートまでの、1サイトあたり買い切り
試用とかはない。買うとzipで振ってくる or private composerで入れる
利用者登録(これは無料)をすると、ドキュメントが読める
設定はコードで行う(DBに設定を保存することはない)
デモ
https://youtu.be/pLcM3mpZSV0?t=320
8:29 リソースに紐付いたリソースを掘ってって編集できる 詳しい解説
Taylorによる紹介記事
a primary feature of Nova is the ability to create, read, update, and delete resources in your database
Resource Management
Novaの主たる機能はデータリソースのCRUD
エッジケースも頑張ってる
「polymorphicなmany to many relationshipの中間・pivotテーブルのデータをUpdateしたい」できるよ
polcymorhicなrelationship:1つのassociationにおいて、対象のモデルを1つ以上のモデルの種類に所属(belongs to)させることができる 例:one-to-oneなPost - ImageとUser -Imageがある。これらはImageのモデルを共有しているとする(Imageモデルが2つのモデルに所属されている)
両方で使われているImageのリストを取得することができる
resourceのviewでは関連するリソースも見ることができる
検索
Userに所属しているPostがあったとき、紐付いているのですぐ探せる
Action
用語:リソース
既存のEloquent modelにNova向けの要素を追加したもの
アプリにUser Eloquentがあったとすると、それに対応するUser resourceを作成するところからNovaの利用が始まる
リソースに対するタスクを定義して実行できる
例:ユーザをeactivateするActionを定義する(コード)。UsersのビューからUserを指定してActionを実行する(GUI)
キューに積まれて非同期に実行される
Filter
カラムが条件にマッチするレコードをフィルターする
リソースにアタッチして使う
リソースのPrimary indexに適用される
Lens
リソースをそのまま表示するのではなく、データ加工をして集計値を表示できる
Lensをリソースにアタッチする形式で利用する
各リソースのpublic function lenses(Request $request){ return [];}にLensのクラスを名を書く
Lens classの中ではEloquentをつかってqueryを書いて集計する
例:UserがMost Valuable Userのlensを持っているとする
MVU lensはユーザとライフタイムの課金額を表示し、課金額の高い順にユーザを並べる
このLensをユーザにカラムにアタッチすると
アタッチ前
https://cdn-images-1.medium.com/max/800/1*2pZSH8ZeOasRm6zCOpU1Kw.png
アタッチ後
https://cdn-images-1.medium.com/max/800/1*rfbqc7CVyJudF_REBDJSJA.png
Lensはリソース自体とは分離されたfieldを定義している(id, name, revenue)
上の例ではid, nameは同じものを利用するようにしている
Metrics
value, trend, partition(pie-chart)3種類のチャートがとても簡単に出せる
https://cdn-images-1.medium.com/max/800/1*1Mps6OHenTaPc890XXYBBQ.png
実際簡単だった。複雑なものはLensで実現するっぽい?kadoyau.icon
Authorization
Laravelのauthorizationのしくみを利用する
リソースの背後にあるEloquent modelがpolicyを持っていたら自動的にそれが適用される
「リレーションをつかってリソースを他のリソースに割り当てる」権限のコントロールができる
Customization
UIはVue.jsのsingle-file componentsで組まれている tool, cards, fieldsを自作することもできる
artisan nova:toolで利用できる